home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 34 / Amiga Format CD34 (1998-11-20)(Future Publishing)(GB)[!][Christmas issue].iso / -seriously_amiga- / programming / c / mesa-2.6 / lib / glutauto.c < prev    next >
C/C++ Source or Header  |  1998-10-01  |  2KB  |  108 lines

  1. /*
  2.  * Amiga GLUT graphics library toolkit
  3.  * Version:  2.0
  4.  * Copyright (C) 1998 Jarno van der Linden
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Library General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Library General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Library General Public
  17.  * License along with this library; if not, write to the Free
  18.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  */
  20.  
  21.  
  22. /*
  23.  * glutauto.c
  24.  *
  25.  * Version 2.0  16 Aug 1998
  26.  * by Jarno van der Linden
  27.  * jarno@kcbbs.gen.nz
  28.  *
  29.  */
  30.  
  31.  
  32. #include <exec/types.h>
  33. #include <constructor.h>
  34.  
  35. #include <proto/dos.h>
  36. #include <proto/exec.h>
  37. #include <string.h>
  38.  
  39. #include "gl/glut.h"
  40.  
  41. extern struct WBStartup *_WBenchMsg;
  42. extern char __stdiowin[];
  43.  
  44. struct Library *glutBase;
  45. static void *libbase;
  46.  
  47. extern struct Library *mesamainBase;
  48. extern struct Library *mesadriverBase;
  49.  
  50. void glutautoopenfail(char *lib, int ver)
  51. {
  52.    struct DOSBase *DOSBase;
  53.    long fh;
  54.    char buf[50];
  55.  
  56.    DOSBase = (struct DOSBase *)OpenLibrary("dos.library",0);
  57.    if (_WBenchMsg == NULL)
  58.       fh = Output();
  59.    else
  60.       fh = Open(__stdiowin, MODE_NEWFILE);
  61.  
  62.    if (fh)
  63.    {
  64.        RawDoFmt("Can't open version %ld of ",
  65.                 &ver, (void (*))"\x16\xC0\x4E\x75", buf);
  66.  
  67.        Write(fh, buf, strlen(buf));
  68.        Write(fh, lib, strlen(lib));
  69.        Write(fh, "\n", 1);
  70.  
  71.        if (_WBenchMsg)
  72.        {
  73.            Delay(200);
  74.            Close(fh);
  75.        }
  76.    }
  77.  
  78.  
  79.    CloseLibrary((struct Library *)DOSBase);
  80.    ((struct Process *)FindTask(NULL))->pr_Result2 =
  81.                       ERROR_INVALID_RESIDENT_LIBRARY;
  82.  
  83. }
  84.  
  85. CBMLIB_CONSTRUCTOR(openglut)
  86. {
  87.    glutBase = libbase =
  88.        (void *)OpenLibrary("glut.library", 2);
  89.    if (glutBase == NULL)
  90.    {
  91.      glutautoopenfail("glut.library", 2);
  92.      return 1;
  93.    }
  94.  
  95.    glutAssociateGL(mesamainBase,mesadriverBase);
  96.  
  97.    return 0;
  98. }
  99.  
  100. CBMLIB_DESTRUCTOR(closeglut)
  101. {
  102.    if (libbase)
  103.    {
  104.       CloseLibrary((struct Library *)libbase);
  105.       libbase = glutBase = NULL;
  106.    }
  107. }
  108.